package com.itheima.stock.mapper;

import com.itheima.stock.common.domain.Stock4EvrDayDomain;
import com.itheima.stock.common.domain.Stock4MinuteDomain;
import com.itheima.stock.common.domain.StockUpdownDomain;
import com.itheima.stock.pojo.StockRtInfo;
import lombok.Data;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
* @author Null
* @description 针对表【stock_rt_info(个股详情信息表)】的数据库操作Mapper
* @createDate 2022-03-14 18:18:54
* @Entity com.itheima.stock.pojo.StockRtInfo
*/
@Mapper
public interface StockRtInfoMapper {

    int deleteByPrimaryKey(Long id);

    int insert(StockRtInfo record);

    int insertSelective(StockRtInfo record);

    StockRtInfo selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(StockRtInfo record);

    int updateByPrimaryKey(StockRtInfo record);

    /*
    * timePoint 时间点,精确到分钟
    * 查询指定时间点下数据,然后根据涨幅排序,取前10
    * */
    List<StockUpdownDomain> getStockRtInfoLimit(@Param("timePoint") Date timePoint);

    /*
    * 根据日期和涨幅降序排序查询股票信息
    * */
    List<StockUpdownDomain> getStockInfo4All();

    /*
     * 统计T日(最近最新一次股票交易日)涨停和跌停分数统计
     * */
    @MapKey("id")
    List<Map> getStockUpDownCount(@Param("startTime") Date startTime,//开始时间
                                  @Param("endTime") Date endTime,//结束时间
                                  @Param("flag") int flag);//标识: 1 涨停, 0 跌停

    /*
     * 统计计当前时问下（精确到分钟），股票在各个冰阳区问的数量
     * 如果当前不在股票有效时间内，则以最近最新的一个有效股票交易日作为查询时间点(精确到分钟)展示;
     * */
    @MapKey("id")
    List<Map> getStockUpDownRegion(@Param("timePoint") Date timePoint);

    /*
     *查询个股的分时行情数据，也就是统计指定股票T日每分钟的交易流水数据
     * stockCode : 股票的编码(code)
     */
    List<Stock4MinuteDomain> getStockInfoByCodeAndDate(@Param("stockCode") String stockCode,
                                                       @Param("startTime") Date startTime,
                                                       @Param("endTime") Date endTime);
    /*
     * 功能描述:个股日K数据查询,可以根据时间区问查询数日的K线数据
     *       默认查询历史20天的数据;
     *   注意:如果当大盘尚未收盘，则以最新的交易价格作为收盘价格
     * */
    List<Stock4EvrDayDomain> getStockInfoEvrDay(@Param("stockCode") String stockCode,
                                                @Param("startTime") Date startTime,
                                                @Param("endTime") Date endTime);
}
